package config

type envConfig struct {
	AppId                  string   `mapstructure:"APP_ID"` // 应用ID
	RootPath               string   // 项目根目录
	DirectPort             int      `mapstructure:"DIRECT_PORT"`      // 直连端口
	DevMode                bool     `mapstructure:"DEV_MODE"`         // 开发模式
	GinMode                string   `mapstructure:"GIN_MODE"`         // gin运行模式
	PublicUrl              string   `mapstructure:"PUBLIC_URL"`       // 对外发布的Url
	ServerPort             int      `mapstructure:"SERVER_PORT"`      // 服务运行端口
	DisallowModify         bool     `mapstructure:"DISALLOW_MODIFY"`  // 禁止修改操作 (演示功能,限制POST请求)
	PublicPrefix           string   `mapstructure:"PUBLIC_PREFIX"`    // 资源访问前缀
	UploadDirectory        string   `mapstructure:"UPLOAD_DIRECTORY"` // 上传文件路径
	RedisUrl               string   `mapstructure:"REDIS_URL"`        // Redis源配置
	RedisPoolSize          int      // Redis连接池大小
	RedisDb                int      `mapstructure:"REDIS_DB"`      // Redis数据库
	DatabaseUrl            string   `mapstructure:"DATABASE_URL"`  // 数据源配置
	DatabaseName           string   `mapstructure:"DATABASE_NAME"` // 数据库名称
	DbTablePrefix          string   // Mysql表前缀
	DbDefaultStringSize    uint     // 数据库string类型字段的默认长度
	DbMaxIdleConns         int      // 数据库空闲连接池最大值
	DbMaxOpenConns         int      // 数据库连接池最大值
	DbConnMaxLifetimeHours int16    // 连接可复用的最大时间(小时)
	Version                string   // 版本
	Secret                 string   // 系统加密字符
	StaticPath             string   // 静态资源URL路径
	StaticDirectory        string   // 静态资源本地路径
	RedisPrefix            string   // Redis键前缀
	UploadImageSize        int64    // 上传图片限制
	UploadVideoSize        int64    // 上传视频限制
	UploadFileSize         int64    // 上传文件限制
	UploadImageExt         []string // 上传图片扩展
	UploadVideoExt         []string // 上传视频扩展
	UploadFileExt          []string // 上传文件扩展
	AutoMigrate            bool     `mapstructure:"AUTO_MIGRATE"`    // 自动迁移
	HouseReadHour          string   `mapstructure:"HOUSE_READ_HOUR"` // 房屋读取时间
	MqttOpen               bool     `mapstructure:"MQTT_OPEN"`
	MqttHost               string   `mapstructure:"MQTT_HOST"`
	MqttPort               int      `mapstructure:"MQTT_PORT"`
	MqttUsername           string   `mapstructure:"MQTT_USERNAME"`
	MqttPassword           string   `mapstructure:"MQTT_PASSWORD"`
	InfluxOpen             bool     `mapstructure:"INFLUX_OPEN"`
	INFLUXDB_URL           string   `mapstructure:"INFLUXDB_URL"`
	INFLUXDB_TOKEN         string   `mapstructure:"INFLUXDB_TOKEN"`
	INFLUXDB_ORGANIZATION  string   `mapstructure:"INFLUXDB_ORGANIZATION"`
	INFLUXDB_BUCKET        string   `mapstructure:"INFLUXDB_BUCKET"`
}

type adminConfig struct {
	BackstageManageKey       string
	BackstageRolesKey        string
	BackstageTenantsKey      string
	BackstageTokenKey        string
	BackstageTokenSet        string
	BackstageTokenExpireTime int
	NotLoginUri              []string
	NotAuthUri               []string
	ShowWhitelistUri         []string
	CommonUri                []string
	SuperAdminId             uint
	SuperTenantId            uint
	ReqAdminIdKey            string
	ReqTenantIdKey           string
	ReqPostHierarchyKey      string
	ReqAuthReq               string
}
